#pragma once

namespace Engine
{
class NInput
{
public:
	union KeyState
	{
		long lparam;
		struct KeyInfo
		{
			unsigned nRepeatCount : 16;
			unsigned nScanCode : 7;
			unsigned nExtended : 1;
			unsigned nReserved : 4;
			unsigned nContext : 1;
			unsigned nPrev : 1;
			unsigned nTrans : 1;
		};
	};
public:
	NInput(void);
	virtual ~NInput(void);
	virtual bool Initialize();
	virtual void Deinitialize();
	virtual void Update(float gameTime);
	virtual void HandleKeyDown(unsigned wParam, long lParam);
	virtual void HandleKeyUp(unsigned wParam, long lParam);
	virtual bool IsKeyDown(int keyValue);
};
}

Engine::NInput* GetInput();